<!DOCTYPE html><html><head><title>启动器版本管理</title><meta charset='utf-8'><link href='https://cdn.maxiang.io/res-min/themes/marxico.css' rel='stylesheet'><style></style></head><body><div id='preview-contents' class='note-content'>
                        
                    



<h1 id="启动器版本管理">启动器版本管理</h1>



<h2 id="1-项目结构">1. 项目结构</h2>

<ul><li><p><strong>CustomBA</strong>：启动器安装与卸载的自定义引导界面，生成的文件是一个dll，供wix生成文件安装包</p></li>
<li><p><strong>IntoTheVoid</strong>：启动器的主功能项目，主要负责PC游戏下载开启及更新问题，生成的是IntoTheVoid.exe文件，在vs里面设为启动项目可以直接调试</p></li>
<li><p><strong>IntoTheVoid.exe</strong>：启动器的完整安装包，生成的是给用户的exe软件安装包（实际叫捆绑包，真正的安装包是msi），用脚本生成会有版本号跟在文件之后，在VS里生成的都会是默认的版本号</p></li>
<li><p><strong>IntoTheVoid.msi</strong>：安装包，在这个项目里配置安装包中打包需要的内容</p></li>
<li><p><strong>UpdateVersion</strong>：工具类，只是为了改版本号及写版本号文件</p></li>
</ul>



<h2 id="2-版本管理">2. 版本管理</h2>

<p>项目很多地方有版本号，为了把版本号进行统一，<strong>所有版本号在使用打包脚本之后都为统一版本号</strong>，如果用vs生成的是默认版本号。 <br>
软件实际展示版本号的位置：</p>



<h3 id="1打包生成的安装包版本号">1.<strong>打包生成的安装包版本号</strong></h3>



<p><img longdesc="./1713409716533.png" alt="Alt text" title="" type="image/png" src="" class=""><img longdesc="./1713409760598.png" alt="Alt text" title="" type="image/png" src="" class=""></p>



<h3 id="2安装后电脑卸载列表里的版本号">2.<strong>安装后电脑卸载列表里的版本号</strong></h3>



<p><img longdesc="./1713409873075.png" alt="Alt text" title="" type="image/png" src="" class=""></p>



<h3 id="3安装后启动器的exe文件版本号">3.<strong>安装后启动器的exe文件版本号</strong></h3>

<ul><li><p><img longdesc="./1713409980473.png" alt="Alt text" title="" type="image/png" src="" class=""></p></li>
</ul>



<h3 id="4启动器打开后用户界面版本号">4.<strong>启动器打开后用户界面版本号</strong></h3>



<p><img longdesc="./1713410033894.png" alt="Alt text" title="" type="image/png" src="" class=""></p>



<p><img longdesc="./1713410493938.png" alt="Alt text" title="" type="image/png" src="" class=""> <br>
其中1、2点的版本号来源相同，3、4版本号的来源相同</p>



<h2 id="3-脚本编译">3. 脚本编译</h2>



<h4 id="环境检查">环境检查</h4>

<blockquote>
  <p><mark>前置检查</mark>：<strong>msbuild是否添加到环境变量</strong>里了（新添加需要重启） <br>
  <img longdesc="./1713412000387.png" alt="Alt text" title="" type="image/png" src="" class=""></p>
</blockquote>



<h4 id="编译脚本">编译脚本</h4>

<p>使用msbuild命令编译，编译文件分为两个在根目录下的<strong>install_Release.bat</strong>与<strong>install_Debug.bat</strong>分别为编译的两个版本 <br>
在根目录下打开cmd命令行，工具或者是在vs的PowerShell里直接运行就可以</p>



<p><img longdesc="./1713411860235.png" alt="Alt text" title="" type="image/png" src="" class=""></p>



<p><img longdesc="./1713411879827.png" alt="Alt text" title="" type="image/png" src="" class=""></p>



<h4 id="脚本操作">脚本操作</h4>

<p>编译脚本的主要操作：</p>

<ul><li><p>1.生成工具类项目UpdateVersion，项目使用的都是Release版本</p></li>
<li><p>2.运行工具更新CustomBA与IntoTheVoid两个项目的<strong>AssemblyInfo的版本号</strong>（更新逻辑就是在原有版本号基础上最后一位加1）</p></li>
<li><p>3.工具会保存操作2更新的版本号文件到解决方案根目录为<strong>version</strong>文件，里面只保存四位版本号</p></li>
<li><p>4.读取version文件版本号使用version文件版本号的内容<strong>传入wix项目生成参数Version</strong>里，这就是安装包msi与捆绑包exe的版本号</p></li>
</ul>



<h2 id="4-版本号生成流程">4. 版本号生成流程</h2>



<h3 id="41-版本号在代码中的位置">4.1 版本号在代码中的位置</h3>



<h4 id="1assemblyinfocs">1.AssemblyInfo.cs</h4>

<p>在项目CustomBA与IntoTheVoid工程里都有这个文件，这个文件代表生成对应的CustomBA.dll或者IntoTheVoid.exe的版本信息</p>



<p><img longdesc="./1713420150069.png" alt="Alt text" title="" type="image/png" src="" class=""></p>



<h4 id="2bundlewxs">2.Bundle.wxs</h4>

<p>在项目IntoTheVoid.exe项目中，所指向的是生成的安装包的exe的属性版本号。</p>



<p><img longdesc="./1713420477173.png" alt="Alt text" title="" type="image/png" src="" class=""></p>



<p><img longdesc="./1713420503091.png" alt="Alt text" title="" type="image/png" src="" class=""></p>



<p><img longdesc="./1713424415325.png" alt="Alt text" title="" type="image/png" src="" class=""></p>

<p>重新生成的安装包如果这个版本号不更新（新版本号小于等于已经安装的版本）就会出现安装新的包之后虽然能正确静默卸载以前的版本文件，但是无法在程序与功能面板里删除对应的数据 <br>
所以，<mark>在每次更新的时候这个版本号都应该增加！！</mark>，这样才能在安装新版本的时候静默卸载之前的版本</p>



<h4 id="3productwxs">3.Product.wxs</h4>



<p><img longdesc="./1713424901704.png" alt="Alt text" title="" type="image/png" src="" class=""> <br>
目前没有发现这个位置的版本有什么具体的大作用，唯一的显示位置是在电脑的安装包Cashe目录会显示，似乎也不影响更新</p>



<p><img longdesc="./1713424972367.png" alt="Alt text" title="" type="image/png" src="" class=""></p>



<h3 id="42-版本号流程">4.2 版本号流程</h3>

<ul><li><p>1.使用工具更改IntoTheVoid项目中AssemblyInfo.cs的版本号，原理是根据文件原来的版本号信息在最后一位加上1，（如果希望从1.0.0.0更新到1.0.1.x系列建议先手动更改为1.0.1.0）</p></li>
<li><p>2.保存更新的版本号文件到根目录version</p></li>
<li><p>3.编译项目msi与exe读取version文件的版本号信息，传入编译</p></li>
<li><p>4.exe文件编译成功后会改名，把文件末尾加上版本号内容</p></li>
<li><p>4.生成新版本号的安装包</p></li>
</ul>

<blockquote>
  <p>建议每次生成新包之后把version文件与两个AssemblyInfo.cs上传，本地手动打包暂时先按照这个方案</p>
</blockquote></div></body></html>